Shell Scripts
什么是Shell scripts
shell script是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法与指令(含外部指令)写在里面,搭配正则表达式,管线命令与数据流重导向等功能,以达到我们所想要的处理目的。
干嘛学习shell scripts
自动化管理的重要依据
追踪与管理系统的重要工作
系统服务启动接口所在的目录下所有文件都是scripts,包括开机(booting)过程也都是利用shell script来帮忙搜寻系统的相关设置数据,然后再代入各个服务的设置参数。
简单入侵侦测功能
连续指令单一化
简易的数据处理
跨平台支持与学习历程较短
第一支script的撰写与执行
shell script其实就是纯文本文件,可以编辑这个文件,然后让这个文件一次执行多个指令。
- 指令的执行是从上而下、从左而右的分析与执行。
- 指令、选项与参数间的多个空白都会被忽略掉。
- 空白行也将被忽略掉,并且[tab]按键所推开的空白同样视为空白键。
- 如果读取到一个Enter符号 (CR) ,就尝试开始执行该行 (或该串) 命令。
- 至于如果一行的内容太多,则可以使用“ [Enter]”来延伸至下一行。
- #可做为注解!任何加在 #后面的数据将全部被视为注解文字而被忽略!
假设编写好的文件名为shell.sh。执行方法有。
- 直接指令下达:shell.sh文件必须具备可读与可执行(rx)的权限。无论如何到达shell.sh的目录,然后直接输入shell.sh就能执行。
- 以bash程序来执行,通过bash shell.sh或sh shell.sh来执行。
撰写第一支script
- 第一行# ! / bin / bash在宣告这个script使用的shell名称:因为我们使用的是bash,所以,必须要以“ # ! / bin / bash”来宣告这个文件内的语法使用bash的语法!那么当这个程序被执行时,他就能够载入bash的相关环境配置文件(一般来说就是non-login shell的~/.bashrc),并且执行bash来使我们下面的指令能够执行!这很重要的! (在很多状况中,如果没有设置好这一行,那么该程序很可能会无法执行,因为系统可能无法判断该程序需要使用什么shell 来执行啊! )
- 程序内容的说明: 整个script当中,除了第一行的“ # !”是用来宣告shell的之外,其他的 # 都是“注解”用途! 所以上面的程序当中,第二行以下就是用来说明整个程序的基本数据。一般来说,建议你一定要养成说明该script的:1.内容与功能;2.版本信息; 3.作者与联络方式;4.创建日期;5.历史纪录等等。这将有助于未来程序的改写与debug。
- 执行成果告知(定义回传值),可以利用exit这个指令来让程序中断,并且回传一个数值给系统。利用exit n(n是数字)的功能,可以自订错误讯息,让程序变得更加smart。
撰写shell script的良好习惯创建
在每个script的文件开始处记录好:
- script的功能
- script的版本信息
- script的作者与联络方式
- script的版权宣告方式
- script的历史记录
- script内教特殊的指令,使用绝对路径的方式来下达
- script运行时需要的环境变量预先宣告与设置